package chapter3.lc75;

//LC 75  颜色分类
public class SortColors2 {
    //两根指针，zero和two
    //zero左边全都是0， two右边全都是2，其余都是1
    //初始情况，zero在最左，two在最右
    public void sortColors(int[] nums) {
        int zero = -1, two = nums.length;
//      for (int i = 0; i < nums.length; i++) {
        for (int i = 0; i < two; i++) { //循环到two指针的时候终止
            if (nums[i] == 0) {
                swap(nums, ++zero, i);
            }else if (nums[i] == 2) {
                swap(nums, --two, i);
                i--;
            }
            // nums[i] == 1的时候什么都不用做，i指针前移即可
        }
    }

    public void swap(int[] nums, int i, int j) {
        if (i == j) return;
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }

}
